The present state of the software art is distinguished in that generally different applications are programmed on the basis of existing software frameworks. There are likewise expansion opportunities for existing frameworks.
A paradigm for producing programs is what is known as component-based programming, in which—in similar fashion to in the case of object-oriented programming—a program is created from self-contained entities. In contrast to object-oriented programming, however, the components are provided by suppliers and are already compiled program elements, which are therefore in binary form, of which the respective programmer knows only the interface definitions for interaction with other components. Expansions to frameworks are generally binary, particularly in the case of components, which means that a binary module created in accordance with the rules of the expanded framework needs to be generated and connected in order to be able to expand the framework as a whole.
A program system within the meaning of the present description is to be understood to include an integral program which includes a plurality of program elements and in which the individual program elements, for example components etc., are connected to one another by software interfaces in order to allow them to interact. Typically, an application includes a series of such interacting components. If the components of an application or a program system are logically connected to one another, it is impossible to adapt the connections to the changing demands for the program system without changing the source code of the program system and then having to recompile it.
In the event of demand changes, the program system had to be adapted and retranslated in the source text, which was impossible without access to the source code of the program system or of the components which needed to be changed. By way of example, if a display program for visual elements in a particular format is also suitable for displaying visual elements in another format, which means that an NMR application is also suitable for displaying AX images, for example, but requires certain adaptation in order to display the other display formats, it has not been possible to date to alter the program if the source text was not available, which was generally the case. It was therefore necessary to program a completely new display for the new visual data.
In object-oriented systems, in which the elements are not “linked” until during the program system's runtime, it is possible to replace objects with other objects having other, for example expanded, capabilities while program starting is still in progress. In this way, it is possible to influence the behavior of an application to the extent that the object-internal behavior of individual objects is affected. Even in the case of such an object-oriented system with linking at the program starting time (or even not until the program is running), however, it is not possible to change the interaction between various objects without knowledge of the source text.
Object-oriented and component-oriented program systems are most usually event-driven. Thus, the individual components or objects of a program system when the program system is being executed can generate “events” which are sent via one or more event queues to other objects, prescribed by the programming, at which point the data linked to the event are processed further in line with the type of event. The forwarding of the events has a permanent link within the context of application creation, as described above. It is not possible to influence the reaction of event handlers to the events sent to them either, since these too are created and compiled using the programming tools available. This in turn applies particularly to the reciprocal reaction of the event handlers, which generate new events and forward them to other objects or components of a program system.
To actually be able to change the behavior of such a program system, it would be necessary to be able to alter the distribution of the events, i.e. the connection between the individual interfaces which are present, and also the reaction of the event handlers.